package com.cn.wanxi.util;

/**
 * com.cn.wanxi.util
 * 国际，国内，公司名称，具体包
 * -----servlet  三层架构
 * model---对象--对页面进行数据进行抽象
 * dao ---  数据实现层   主要是为了存放数据
 * service  ---   服务逻辑层    写逻辑代码
 * servlet   -----  页面控制层   和页面相关
 * util ---- 工具层   放工具类
 */
public class MyHelp {
    /**
     * 2021-6-28 面向对象
     * 对象？
     * 对象  是一个名词
     * 我们怎么区分对象？
     * 1.找对象的不同点？外貌  通过眼睛去观察
     * 2.使用（作用）范围？  行为
     * 对象----人类
     * 通过  1，2点 我们可以区分对象
     * 但是  如果有太多的1，2 都是一样的----类
     * -------------------------
     * 人  没有具体指定
     *      人脸
     *      直立行走
     *      名字
     *      年龄
     *      穿着
     *      说话
     *      运动
     *      某个对象
     *
     * Java里面  --- 语言  Java
     * 类是对象的一个抽象表示  类不属于任何一个对象
     *  类 --- 對象
     *  类怎么来描述？
     *  类是由什么组成？
     *  对象由什么组成？
     *  1.package  包
     *  2.class    类
     *  3.field    属性
     *  4.method   方法
     *  5.constructor  构造方法
     *
     * 1.包  新建文件夹 ----区分不同代码  模块
     *      命名规则：全部小写
     *      com.cn.wanxi......
     * 2.类
     *      Java  面向对象    看到对象   定义对象
     *      对象之间最好不要由交叉
     *      1）类的定义  CompanyDao+包名
     *      2）类的命名
     *          类名大写  --大驼峰式命名规则  每一个单词首字母大写，第一个字母大写
     *          CompanyService
     *          小驼峰式命名  findUserByUsernameAndPassword 第一个字母小写
     *
     * 3.属性   描述 一个对象
     *      1.怎么定义属性？
     *      2.命名规范
     *       小驼峰式命名
     *       一个完整定义属性的代码？
     *       权限修饰符   特征修饰符  数据类型  属性名  赋值运算符   字面量；
     *       private       static       CompanyDao     name   =             "xinyucanyin";
     *  数据类型：基本类型 引用类型
     *  命名规则：
     *        变量---
     *        局部变量  ---针对于方法  只要不是类的属性
     *        全局变量   直接将变量写在类下面
     *        类变量   static
     *        静态变量   static
     *        常量---
     *         类
     *         方法
     *
     *  1.大驼峰  类  引用类型   CompanyModel
     *  2.小驼峰  变量  方法   String  userName=“aaa”
     *  3.全大写   常量      String  USER_NAME="FADS";
     *  4.全小写    包
     */
    /**
     * 2021-6-29  对象的方法
     * 1.类的组成部分
     *      1）包
     *      2）属性
     *      3）数据类型
     * 2.修饰符
     *      1）权限--访问修饰符
     *      2）特征--非访问修饰符
     *      1）private  私有
     *      2）public   公有
     *      3）protected 受保护
     *      4） 默认不写
     *
     *      以后-我们去封装对象时，所有的对象最好都要有修饰符，最好都是private私有，
     *      如果需要，那就对别人开放一个调用接口
     *      修饰符最常见的在类,接口，属性，方法
     *      类，public，，默认不写，接口也是属于类
     *      属性，public，protected，默认不写，private
     *      方法public，protected，默认不写，private
     *----------------------------------------------------------------------
     * static 修饰符，用来修饰类方法和类变量。
     * final 修饰符，用来修饰类、方法和变量，final 修饰的类不能够被继承，修饰的方法不能被继承类重新定义，修饰的变量为常量，是不可修改的。
     * abstract 修饰符，用来创建抽象类和抽象方法。
     * synchronized 和 volatile 修饰符，主要用于线程的编程。
     *
     * static 如果修饰属性，表示在内存里面只出现一次 ，节省了 cup性能,
     *        并不是说所有的地方都可以用static，
     *        直接用static，表示，项目启动时，必须将当前的值加入的内存
     *        static调用的时候，直接通过类名.属性或者类名.方法名
     *
     *        调用方法和属性一致
     * final   修饰变量一般用来修饰常量，不可改变，最终的
     * final 修饰类的时候，不能由子类继承
     * final  修饰方法 不能被子类重写
     *          重写：子类重写父类的方法---多态
     *          方法名相同，参数相同 返回类型可以不同(父类的返回值类型访问比子类大)
     *          重载：方法名相同，参数类型不同，参数个数不同
     *  抽象类
     *  接口--一个特殊的抽象类
     *  抽象类和接口的区别？
     *  重写与重载的区别？
     * synchronized 修饰符 同步   只允许一个线程访问  所有线程访问时必须排队 将多线程改变成单线程
     * transient 修饰符
     * volatile 修饰符
     * native 修饰符
     *
     * ====================================================
     * 方法    一个完整的方法
     * 权限修饰符  特征修饰符  返回值类型 方法名（参数  参数名)异常{
     *     执行体
     *     return 返回值；
     * }
     * 构造方法和代码块都是属于方法改变过来的
     * 构造方法：方法名和类名一致  权限修饰符 +类名{
     *
     * }
     * 构造方法是否由返回值？ 是由返回值,返回值是对象本身
     * 加载顺序？
     * 首先加载的是静态代码块
     * 其次，代码块
     * 其次，构造方法
     * 当出现继承，则将子类和父类当作一个类，首先加载父类，在加载子类，其他同上
     *  -------------------------------------------------------------
     *  做项目：将所有前端的数据和图片按照面向对象的方式提取出来，然后放到后台，通过页面进行展示
     *  前台：web
     *  后台：src--Java
     *  ---------------
     *  1，定义model   找到每个对象的属性---最小原则
     *  2.需要将页面的值替换成后台的值,所以，后台应该有一个地方存值  dao
     *  3.前臺和后台应该由一个数据交互：所以后台servlet层对应前端
     *          1.继承servlet--之前需要导入jar包
     *          2.重写doget方法
     *          3.提供前端访问后台的接口@WebServlet("/home")
     *          4.通过这里返回一个正确的jsp页面
     *  4.前端也应该接受后台的值，通过什么来接受--jsp
     *      jsp：将html修改成jsp文件
     *  注意：第二阶段时属于Java web项目，需要一个启动容器--tomcat
     *  5.前端所有的数据应该来源于后台
     *      前端接受后台的数据用 ${key值}，要访问后台
     *      后台要将值返回给前端
     *      jsp出来的目的就是为了取消js
     *------------------------------------------------------------------------------
     * 总结：
     *  1.方法
     *  2.构造方法
     *  3.类加载顺序
     *  4.修饰符
     *  5.dao，model，servlet，jsp 每层做什么事情？
     *  ${}
     *  注意：
     *  model和dao一一对应
     *  servlet和jsp一一对应
     *  --------------------------
     *  servlet 四大作用域？
     *  jsp  就打内置对象？
     *  doget和dopost的区别？
     *  servlet 的生命周期？
     *  页面转发和重定向的区别？
     *  抽象类和接口的区别？
     *  重写与重载的区别？
     */
    /**
     * 2021-6-30 項目實戰
     * 1.作用域
     * 2.jstl标签  for---if--otherwise--choose  --out
     * 3.common公共部分提取  修饰符
     * 4.数组   ---赋值，取值    for循环遍历
     * 5.理解后台的三层架构
     *   model ，dao，service  一一对应
     *   servlet  页面控制层 可以得到无数个对象，所以可以调用无数个service
     *   servlet 只能和service服务逻辑层相关
     *   service只能和dao相关
     *   util  工具层
     *   ------------------------------
     *   输入输出流：
     *   file类--方法
     *   简单写（将数据写入文件）和读（将字符从文件读出来）
     */
}
